import subprocess
import sys


def set_npm_mirror(mirror_url="https://registry.npmmirror.com"):
    """设置npm镜像源"""
    try:
        # 使用字符串形式的命令（适用于shell=True）
        cmd = f"npm config set registry {mirror_url}"
        result = subprocess.run(
            cmd,
            shell=True,
            capture_output=True,
            text=True,
            check=True
        )
        print(f"成功设置npm镜像源为: {mirror_url}")

        # 验证设置
        verify_cmd = "npm config get registry"
        verify_result = subprocess.run(
            verify_cmd,
            shell=True,
            capture_output=True,
            text=True,
            check=True
        )
        print(f"当前npm镜像源: {verify_result.stdout.strip()}")

        return True
    except subprocess.CalledProcessError as e:
        print(f"执行npm命令失败: {e.stderr}")
        return False
    except Exception as e:
        print(f"发生未知错误: {e}")
        return False


def reset_npm_mirror():
    """重置npm镜像源为官方源"""
    return set_npm_mirror("https://registry.npmjs.org")


if __name__ == "__main__":
    # 设置为淘宝镜像
    success = set_npm_mirror()

    if not success:
        print("设置镜像失败，尝试使用管理员权限运行此脚本")
        print("Windows系统: 右键点击Python解释器，选择'以管理员身份运行'")
        print("Linux/MacOS系统: 使用sudo命令运行此脚本")
        sys.exit(1)

    # 可选：演示如何重置为官方镜像
    # reset_npm_mirror()